home *** CD-ROM | disk | FTP | other *** search
/ Gigantic Games 2 / Gigantic Games 2.iso / pc / _w_ / wanderer / src / read.c < prev    next >
C/C++ Source or Header  |  1994-12-23  |  2KB  |  96 lines

  1. #include "wand_head.h"
  2.  
  3. extern int edit_mode;
  4. extern char *edit_screen;
  5. extern char screen[NOOFROWS][ROWLEN+1];
  6.  
  7. int rscreen(num,maxmoves)
  8. int *maxmoves, num;
  9. {
  10. int  y,ch;
  11. FILE *fp;
  12. char name[50], buffer[80];
  13. char (*row_ptr)[ROWLEN+1] = screen;
  14. if(!edit_mode)
  15.     sprintf(name,"%s/screen.%d",SCREENPATH,num);
  16. else
  17.     {
  18.     if(!edit_screen)
  19.         sprintf(name,"screen");
  20.     else
  21.     sprintf(name,"%s",edit_screen);
  22.     }
  23. fp = fopen(name,"r");
  24. if(fp == NULL)
  25.     {
  26.     if(edit_mode)
  27.     sprintf(buffer,"\nCannot find file %s.\n\n",name);
  28.     else
  29.         sprintf(buffer,"\nFile for screen %d unavailable.\n\n",num) ;
  30.     addstr(buffer);
  31.     }
  32. else
  33.     {
  34.     for(y = 0;y<NOOFROWS;y++)
  35.         {
  36.         fgets((*row_ptr++),ROWLEN + 1,fp);
  37. #ifndef AMIGA
  38.     /* for some reason Amiga Lattice C behaves differently here */
  39.     /* Amiga already removed the newline character */
  40.     fgetc(fp);                         /* remove newline char*/
  41. #endif
  42.     }
  43.     /* skip over final line, then read number of moves permitted */
  44.     while ( (ch = fgetc(fp)) != '\n' && ch != EOF) {}
  45.     if(fscanf(fp,"%d",maxmoves) != 1)
  46.     *maxmoves=0;
  47.     fclose(fp);
  48.     }
  49. return (fp == NULL);
  50. }
  51.  
  52. int wscreen(num,maxmoves)
  53. int maxmoves, num;
  54. {
  55. int  y,x;
  56. FILE *fp;
  57. char name[50];
  58. char (*row_ptr)[ROWLEN+1] = screen;
  59. if(!edit_screen)
  60.     sprintf(name,"screen");
  61. else
  62.     sprintf(name,"%s",edit_screen);
  63. fp = fopen(name,"w");
  64. if(fp == NULL)
  65.     {
  66. #ifdef AMIGA
  67.     strcpy(name, "ram:screenfile");
  68. #else
  69.     sprintf(name,"/tmp/screen.%d",getpid());
  70. #endif
  71.     fp = fopen(name,"w");
  72.     move(21,0);
  73.     addstr("Written file is ");
  74.     addstr(name);
  75.     refresh();
  76.     }
  77. if(fp == NULL)
  78.     addstr("\nFile for screen cannot be written.\n\n") ;
  79. else
  80.     {
  81.     for(y = 0;y<NOOFROWS;y++)
  82.         {
  83.     for(x = 0;x<ROWLEN;x++)
  84.         fputc(row_ptr[y][x],fp);
  85.     fputc('\n',fp);
  86.     };
  87.     for(x = 0; x<ROWLEN;x++)
  88.     fputc('#',fp);
  89.     fputc('\n',fp);
  90.     if(maxmoves != 0)
  91.     fprintf(fp,"%d\n",maxmoves);
  92.     fclose(fp);
  93.     };
  94. return (fp == NULL);
  95. }
  96.